﻿#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;

//1.全局变量检测增强；不能通过！
//int cA;
int cA = 10;

//2.函数的检测增强，参数类型增强，返回值检测增强，函数调用参数检测增强；
//int getRectS(w, h)
int getRectS(int w, int h)
{
	return w * h;
}
void testEnhance()
{
	//getRectS(10, 10, 10);
	getRectS(10, 10);
}
//3.类型转换检测增强；
void testTransform()
{
	//4.malloc返回的是void*；
	char* p = (char*)malloc(sizeof(64));
}
//5.struct增强；
struct PersonEnhance
{
	int m_Age;
	//6.C++中struct可以加函数；
	void plusAge() { m_Age++; };
};
void testPersonEnhance()
{
	//7.C++中，使用的时候，可以不加入struct关键字；
	PersonEnhance p1;
	p1.m_Age = 10;
	p1.plusAge();
	cout << p1.m_Age << endl;//11
}
//8.bool类型增强，C语言中没有bool类型；只有真或假，true代表真（非0），false代表假（0）；
bool flag = true;
void testBool()
{
	cout << sizeof(bool) << endl;//1
	flag = 100;
	//9.bool类型，非0的值转为1，0就转为0；
	cout << flag << endl;//1
}
//13.三目运算符增强；
void testTernaryOperator()
{
	int a = 10;
	int b = 20;
	//printf("10.ret = %d\n", a > b ? a : b);//10.ret = 20
	cout << "11.ret = " << (a > b ? a : b) << endl;//11.ret = 20

	//12.C++中返回的是变量；
	(a > b ? a : b) = 100;
	cout << "a = " << a << endl;//a=10
	cout << "b = " << b << endl;//b=100
}
//14.const增强；修饰全局变量，则全局变量受到保护，不能修改变量的值；
const int m_A = 10;
void testConstEnhance()
{
	//m_A = 100;
	//16.真正常量；
	const int m_B = 20;
	//m_B = 200;

	int* p = (int*)&m_B;
	*p = 200;
	//printf("15.*p = %d, m_B = %d\n", *p, m_B);//15.*p = 200, m_B = 200
	cout << "*p =" << *p << endl;//*p =200
	cout << "m_B =" << m_B << endl;//m_B =20

	//17.可以初始化数组；
	int arr[m_B];
}

//main236：c++对c语言的增强c++语言
int main236()
{
	testPersonEnhance();
	testBool();
	testTernaryOperator();
	testConstEnhance();

	system("pause");
	return EXIT_SUCCESS;
}